iD Software's John Romero discusses deathmatches and frags.Gaming 

Exploring the Programming Technique Behind DOOM’s Multiplayer Mode

Since it was released in 1993, the DOOM franchise by id Software has become one of the most easily recognizable IPs in modern gaming. The series has sold over 10 million copies and has inspired various RPG spinoffs, film adaptations, and even a couple of tabletop board games. However, the initial release of the first game was a close call, as described by id Software cofounder John Romero in an excerpt from his new book, DOOM GUY: Life in First Person. Just a month before its scheduled release in December 1993, the id team was still fine-tuning lead programmer John Carmack’s innovative peer-to-peer multiplayer architecture, perfecting level designs, and simultaneously acting as both programmers and quality assurance testers for the studio. Additionally, during this time, the game introduced a popular term for a killer in the gamer community.

 (Image credit: Abrams Press)
(Image credit: Abrams Press)

Excerpt from John Romero’s DOOM GUY: Life in First Person. Copyright © 2023 by John Romero. Published and printed by permission of Abrams Press, an imprint of ABRAMS. All rights reserved.

At the beginning of October, we were getting close to finishing the game, so progress accelerated. On October 4, 1993, we released the DOOM beta press release, a build of the game that we distributed externally to journalists and video game reviewers so they could try the game before it was released. Concerned about security and leaks, we coded the beta version to stop working on DOS systems after October 31, 1993. The game still had useless loot such as demon daggers, demon chests, and other unholy items. I decided to get rid of these things because they made no sense to the core of the game and rewarded the player with a point, a holdover from Wolfenstein 3-D. I removed the concept from life for the same reason. It was enough to start the level over after death.

There was one more piece missing from the game, and it was a significant one. We hadn’t done anything multiplayer. In modern game development, multiplayer would be a feature that was considered from day one and designed accordingly in an integrated way. Not with DOOM. It was November and we will be publishing in a month.

I brought it to Carmack. “So when are we going to do multiplayer?”

The short answer was that Carmack was ready to take it. From the outside looking in, I suspect some might wonder if I wasn’t just a little worried because we were hoping to ship in 1993. John had never programmed a multiplayer game before. The truth is, I never had a doubt, not for a second. In March, Carmack had already done innovative web programming in DoomEd. He wanted to play with the distributed object system in NeXT-STEP, so he added the ability to allow multiple people using DoomEd to edit the same level. I could see him drawing lines and placing objects on my screen from his computer. Then I added to his room by making a hallway and so on.

In multiplayer, Carmack’s plan was to explore the peer-to-peer network. It was a “quick and dirty” solution instead of a client-server model. Instead of one central computer controlling and controlling all the action between two or four players, each computer would run the game and synchronize with the others. Basically, computers send each other updates at high speed over a local network. Carmack’s web programming speed was remarkable. He had excellent books on networking and luckily those books were clearly written and explained the process of using IPX* well. Within hours, he was communicating between two computers and got the IPX protocol working so he could send data packets to each computer. I had worked with him for three years and was used to seeing amazing things on his screen, but this was amazing, even for him. Within a few hours, he had two computers talking to each other through a command-line-based tool, showing that he could send information over the network. That was the foundation needed to make the game online. It was great for two players and good for four, so we limited it to that. We were still on track to deliver on our promise of the most revolutionary game in history before the end of the year.

Carmack called me into his office to tell me it was working. Both computers in his office had the game open and synced up as the two characters faced each other. On one PC, Carmack flipped his character to the right. On the second screen, the same character appearing in third person moved to the left. It worked!

“Oh my God!” I screamed and wrote some other choice words to convey my surprise. “It’s bloody incredible.”

When I first really visualized a multiplayer experience, I built E1M7. I was playing the game and imagined I saw two other players shooting rockets at each other. At the time, I thought, “This is going to be amazing. There’s nothing like this. This is the most amazing game planet Earth has ever seen.” Now that moment had finally arrived.

I rushed to my computer and opened the game, connecting to Carmack’s computer.

When his character appeared on the screen, I blasted him out of existence, shrieked with joy as I knocked “John” out of the game with a loud, booming, bloody rocket blast. It was beyond anything I had ever experienced before and even better than I imagined it could be.

It was the future, and it was on my screen.

“This is bloody awesome!” I shouted. “This is the greatest thing ever!”

I didn’t spoil it. This was the realization of everything we put into planning months before. I knew DOOM would be the most revolutionary game in history, but now it was also the most fun, all-consuming game in history. Now that all the key elements of our original design were in place, it was obvious. DOOM blew away every other game I had ever played. From that moment on, if I wasn’t playing DOOM or working on DOOM, I was thinking about DOOM.

Kevin, Adrian, and Jay also started playing the game in multiplayer mode to compete in blasting monsters and each other. They screamed just as much as I did, cheered at every execution, groaned when they were killed and had to respawn. I watched them play. I could see the tension in their bodies as they navigated the dark, detailed world we had created. They were hunters and targets engaged in a kill-or-kill battle, not just with monsters, but with other, real people. Players competed in real time with other people in a battle for survival. I was thinking of boxing or an extreme wrestling match where you go to fight in a cage. This was much more violent, more deadly. It was all simulated, of course, but in the moment it felt immediate. It was a new gaming experience and I was looking for a way to describe it.

“This is a deathmatch,” I said. The team stuck to the name. It immediately conveyed the dark survival vibe at DOOM’s core.

In mid-November, we buckled down and entered the “blocking zone,” where you begin to complete all aspects of the game one by one. Now that Carmack had figured out the multiplayer network, we needed to fine-tune the gameplay and functionality and provide two multiplayer modes – one where players work together to kill monsters and demons, and another where players try to kill each other (usually without monsters around). The first space was called co-op, short for cooperative. The second was, of course, deathmatch.

Another important word had to be invented. In deathmatch, the goal was to get the highest number of kills in the game to be judged the winner. What would we call each murder? We could call it a kill, but that seemed like a less creative solution to me. Why don’t we have our own word? I went to the art room to discuss this with Kevin and Adrian.

“Hey guys, for every fatality we need a word that isn’t ‘kill,'” I said.

Kevin said, “Well, maybe we could use the word ‘frag’.

“That sounds like a great word, but what does it mean?” I asked.

“In the Vietnam War,” Kevin explained, “if a sergeant told his fire team to do something horribly dangerous, they would throw a shrapnel grenade at the sergeant and call it friendly fire instead of going along with it. The explanation was ‘Somebody smashed a sarge!’

“So, in the game of death we all crush each other!” I said.

“Exactly.”

And that’s how “frag” entered the DOOM lexicon.

The introduction of deathmatch and cooperative play had a profound effect on the game’s ability to level. Creating an enjoyable level in a single-player mode with lots of tricks and traps was complicated enough, but with the addition of multiplayer, we had to be aware of other players on the level at the same time, and we had to make sure that the single-player player-designed level was fun to play in these new modes. Our level was doing triple the work and we didn’t have time to test every possible situation, so we needed some simple rules to ensure quality. As the multiplayer was quickly approaching the end of development, I needed to define all the game rules for co-op and deathmatch. We then had to modify each game map so that all modes worked on all difficulty levels. These are the rules I quickly came up with to control the level quality:

  • Multiplayer Rule 1: A player should not be able to get stuck in an area without a chance to respawn.
  • Multiplayer Rule 2: Multiple players (deathmatch or co-op mode) require more items; place extra health, ammo and power-ups.
  • Multiplayer Rule 3: Try to balance weapon slots evenly in deathmatch.
  • Multiplayer Rule 4: In Deathmatch mode, try to level up all weapons regardless of what level you are.

In addition, we had to make all the last elements of the game: Intervals and different menus had to be designed, drawn and coded; necessary installation files and text help files. We also had to write code to allow players to play these multiplayer modes through their modems, since that was the hardware that many people had in 1993. Compared to previous games, DOOM’s development pace had been relatively relaxed, but the November to-do list was full. Fortunately, everything fell into place. The last job for everyone was the DOOM stress test.

In preparation for the launch, we knew we needed someone to handle our customer support, so earlier this year we hired Shawn Green, who left his job at Apogee to join us. Throughout development, with each new twist and turn, we kept Shawn in the loop. He had to know the game inside out to help the players if there were any problems. Shawn also helped us by testing the game during its production.

I noticed earlier that id Software never had a QA team testing our releases. For three years, John, Tom and I served as the id QA team. We played our games on our PCs, hitting multiple keys, literally banging keyboards to see if our attacks could affect the game. With the game on the verge of release, and with more people in the office than ever before, we spent 30 hours playing DOOM in every possible way – switching modes, hitting commands – running the game through every level in all our game modes. using every option we add to the game to see if there are any bugs.

Things looked good. We decided to run a final “burn test”, a classic game test where developers launch a game and let it run overnight. We ran DOOM on every machine in the office. The plan was to let it run for hours to see if anything bad happened. After about two hours of inactivity, the game froze on a couple of screens. The PCs seemed fine – if you hit ‘escape’ a menu would pop up – but the game stopped working.

We hadn’t seen a bug like this during development, but Carmack was involved. He thought and didn’t say a word, apparently glancing at the invisible engine map in his head. It was ten minutes before he realized it. He concluded that we were using the PC’s timing chip to track the screen refresh and handle the sound, but we didn’t clear the timing chip’s counter when the game started, which caused the glitch. Ironically, this logic had been part of the engine since day one, so it was surprising that we hadn’t noticed it before.

He sat down at his computer, fixed the bug and built a new version of the game. We put the update on all machines and held our breath for the next two hours.

Problem solved.

That was the last hurdle. We were ready to launch. That day, December 10th, would be DOOM Day.

***

* IPX stands for Internetwork Packet Exchange. All in all, it’s a way for computers to talk to each other.

Related posts

Leave a Comment